package Day_0131.JVM;

/**
 * @author zxc
 * @date 2023/01/31 21:08
 **/
public class MinorGC_FullGC {
    public static void main(String[] args) {
        /**
         * MinorGC和FullGC的区别
         * 1.Minor GC是新生代GC，指的是发生在新生代的垃圾收集动作。
         * （有且仅对于新生代进行垃圾回收）
         *
         * 2.Major GC/Full GC 是老年代GC （不仅仅对于老年代进行垃圾回收 && 也会对于新生代进行垃圾回收）
         * 指的是发生在老年代的GC，出现Major GC一般经常会伴有Minor GC，Major GC的速度比Minor GC慢的多。
         *
         * 3.何时发生？
         * （1）Minor GC发生：
         *  新生代内存不足以为新的对象分配内存空间，即会发生MinorGC。
         *
         * （1）Full GC：
         * 发生GC有两种情况，
         * ①当老年代无法分配内存的时候，会导致FullGC;
         * （即，老年代内存已满的情况下,会触发FullGC，同时对于新生代 && 老年代进行垃圾回收）
         * ②当发生Minor GC的时候可能触发Full GC，（分配担保机制）
         * 采取采用动态估算的方法：老年代对年轻代进行担保，获取上一次垃圾回收时晋升到老年代的对象容量的平均值
         * ===》 若是晋升到老年代的平均总大小大于老年代的空闲空间，发生Full GC;
         *
         */
    }
}
